package com.fast.develop.integration.orm.id;

import cn.hutool.core.lang.generator.SnowflakeGenerator;
import cn.hutool.core.util.StrUtil;
import com.fast.develop.meta.dm.MetaDomainModel;

import java.io.Serializable;
import java.util.Map;

/**
 * @author 莫寅
 * @createTime 2022-06-21 02:56
 * @desc：
 */
public class IdentifierSetter {

    private static SnowflakeGenerator snowflakeGenerator = new SnowflakeGenerator();

    private MetaDomainModelsVisit metaDomainModelsVisit;

    public IdentifierSetter(MetaDomainModelsVisit metaDomainModelsVisit) {
        this.metaDomainModelsVisit = metaDomainModelsVisit;
    }


    public void setId(String meta, Map map){
        MetaDomainModel metaDomainModel = metaDomainModelsVisit.getMeta(meta);
        //TODO 在这该属性中获取ID生成方式
        String idKey = metaDomainModel.getIdentifierProperty().getName();

        Serializable id = (Serializable) map.get(idKey);
        if(id == null || StrUtil.isBlank((String)id)){
            map.put(idKey, snowflakeGenerator.next()+"");
        }

    }



    public enum Type {
        UUID, SNOWFLAKE
    }
}
